package com.px.auditRecord.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.px.common.config.MinIoClientConfig;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import io.swagger.annotations.ApiModelProperty;
import com.px.common.annotation.Excel;
import com.px.common.core.domain.BaseEntity;

/**
 * 航线审核表对象 audit_record_routes
 * 
 * @author WRJ
 * @date 2024-08
 */
@Data
public class AuditRecordRoutes extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /**  */
    @ApiModelProperty(value = "")
    private Integer id;

    /**  */
    @ApiModelProperty(value = "")
    @Excel(name = "")
    private String name;

    /** 起飞点 */
    @ApiModelProperty(value = "起飞点")
    @Excel(name = "起飞点")
    private String takeOffPoint;

    /** 降落点 */
    @ApiModelProperty(value = "降落点")
    @Excel(name = "降落点")
    private String landingPoint;

    /** 备降点 */
    @ApiModelProperty(value = "备降点")
    @Excel(name = "备降点")
    private String reservePoint;

    /** 最大高度 */
    @ApiModelProperty(value = "最大高度")
    @Excel(name = "最大高度")
    private Integer maxHeight;

    /** 最小高度 */
    @ApiModelProperty(value = "最小高度")
    @Excel(name = "最小高度")
    private Integer minHeight;

    /** 最大高度 */
    @ApiModelProperty(value = "最大高度")
    @Excel(name = "最大高度")
    private Integer maxSpeed;

    /** 最小高度 */
    @ApiModelProperty(value = "最小高度")
    @Excel(name = "最小高度")
    private Integer minSpeed;

    /** 进出空域方法 */
    @ApiModelProperty(value = "进出空域方法")
    @Excel(name = "进出空域方法")
    private String airspaceMethod;

    /** 飞行结束时间 */
    @ApiModelProperty(value = "飞行结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "飞行结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date flightEndTime;

    /** 飞行开始时间 */
    @ApiModelProperty(value = "飞行开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "飞行开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date flightStartTime;

    /** $column.columnComment */
    @ApiModelProperty(value = "$column.columnComment")
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private BigDecimal longitude;

    /** $column.columnComment */
    @ApiModelProperty(value = "$column.columnComment")
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private BigDecimal latitude;

    /** 层级 */
    @ApiModelProperty(value = "层级")
    @Excel(name = "层级")
    private Integer hierarchy;

    /** 航线url */
    @ApiModelProperty(value = "航线url")
    @Excel(name = "航线url")
    private String routesUrl;

    /** $column.columnComment */
    @ApiModelProperty(value = "$column.columnComment")
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Integer droneCount;

    /** 0:审核中；1:审核通过；2:审核拒绝； */
    @ApiModelProperty(value = "0:审核中；1:审核通过；2:审核拒绝；")
    @Excel(name = "0:审核中；1:审核通过；2:审核拒绝；")
    private String auditState;

    /** 审核意见 */
    @ApiModelProperty(value = "审核意见")
    @Excel(name = "审核意见")
    private String auditRemark;

    private List<Integer> droneIds;

    private Integer routesBasicId;

    List<AuditRecordRoutesSurface> auditRecordRoutesSurfaceList;

    private String routesMinioUrl;

    private String nickName;

    private String idcard;

    private String phonenumber;

    private ForRecordUser forRecordUser;

    public String getRoutesMinioUrl() {
        if (null != routesUrl && routesUrl.startsWith("http")) {
            return routesUrl;
        } else {
            return MinIoClientConfig.PREVIEW_END_POINT_URL + "/" + routesUrl;
        }
    }

    public void setId(Integer id)
    {
        this.id = id;
    }

    public Integer getId() 
    {
        return id;
    }
    public void setName(String name) 
    {
        this.name = name;
    }

    public String getName() 
    {
        return name;
    }
    public void setTakeOffPoint(String takeOffPoint) 
    {
        this.takeOffPoint = takeOffPoint;
    }

    public String getTakeOffPoint() 
    {
        return takeOffPoint;
    }
    public void setLandingPoint(String landingPoint) 
    {
        this.landingPoint = landingPoint;
    }

    public String getLandingPoint() 
    {
        return landingPoint;
    }
    public void setReservePoint(String reservePoint) 
    {
        this.reservePoint = reservePoint;
    }

    public String getReservePoint() 
    {
        return reservePoint;
    }
    public void setMaxHeight(Integer maxHeight)
    {
        this.maxHeight = maxHeight;
    }

    public Integer getMaxHeight()
    {
        return maxHeight;
    }
    public void setMinHeight(Integer minHeight)
    {
        this.minHeight = minHeight;
    }

    public Integer getMinHeight()
    {
        return minHeight;
    }
    public void setMaxSpeed(Integer maxSpeed)
    {
        this.maxSpeed = maxSpeed;
    }

    public Integer getMaxSpeed()
    {
        return maxSpeed;
    }
    public void setMinSpeed(Integer minSpeed)
    {
        this.minSpeed = minSpeed;
    }

    public Integer getMinSpeed()
    {
        return minSpeed;
    }
    public void setAirspaceMethod(String airspaceMethod) 
    {
        this.airspaceMethod = airspaceMethod;
    }

    public String getAirspaceMethod() 
    {
        return airspaceMethod;
    }
    public void setFlightEndTime(Date flightEndTime) 
    {
        this.flightEndTime = flightEndTime;
    }

    public Date getFlightEndTime() 
    {
        return flightEndTime;
    }
    public void setFlightStartTime(Date flightStartTime) 
    {
        this.flightStartTime = flightStartTime;
    }

    public Date getFlightStartTime() 
    {
        return flightStartTime;
    }
    public void setLongitude(BigDecimal longitude)
    {
        this.longitude = longitude;
    }

    public BigDecimal getLongitude()
    {
        return longitude;
    }
    public void setLatitude(BigDecimal latitude)
    {
        this.latitude = latitude;
    }

    public BigDecimal getLatitude()
    {
        return latitude;
    }
    public void setHierarchy(Integer hierarchy) 
    {
        this.hierarchy = hierarchy;
    }

    public Integer getHierarchy() 
    {
        return hierarchy;
    }
    public void setRoutesUrl(String routesUrl) 
    {
        this.routesUrl = routesUrl;
    }

    public String getRoutesUrl() 
    {
        return routesUrl;
    }
    public void setAuditState(String auditState) 
    {
        this.auditState = auditState;
    }

    public String getAuditState() 
    {
        return auditState;
    }
    public void setAuditRemark(String auditRemark) 
    {
        this.auditRemark = auditRemark;
    }

    public String getAuditRemark() 
    {
        return auditRemark;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("name", getName())
            .append("takeOffPoint", getTakeOffPoint())
            .append("landingPoint", getLandingPoint())
            .append("reservePoint", getReservePoint())
            .append("maxHeight", getMaxHeight())
            .append("minHeight", getMinHeight())
            .append("maxSpeed", getMaxSpeed())
            .append("minSpeed", getMinSpeed())
            .append("airspaceMethod", getAirspaceMethod())
            .append("flightEndTime", getFlightEndTime())
            .append("flightStartTime", getFlightStartTime())
            .append("longitude", getLongitude())
            .append("latitude", getLatitude())
            .append("hierarchy", getHierarchy())
            .append("routesUrl", getRoutesUrl())
            .append("auditState", getAuditState())
            .append("auditRemark", getAuditRemark())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
